iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0
AI & Data

機器學習的 hello world - 用手寫數字辨識系統學習 ML 的 30 天系列 第 4

[DAY4] 使用 OCR 來快速實做出手寫數字辨識系統

  • 分享至 

  • xImage
  •  

上一篇將手寫數字辨識系統的方法分成三類,今天我們就先從 OCR 這個圖片轉文字的方法開始吧!


什麼是光學字元辨識(OCR)?

OCR 是一種從圖片中擷取文字的技術,相關的應用如 google 相簿中圖片的智慧鏡頭,當你使用智慧鏡頭功能時,它可以分析出圖片裡面的文字,或是如果你有使用筆記軟體如 GoodNotes,你可以搜尋到包括手寫筆記的資料。

https://ithelp.ithome.com.tw/upload/images/20220918/20131719q45pkURXvU.png


手寫數字辨識系統程式碼

可以轉文字就可以轉數字!這邊我參考了 STEAM教育學習網[註1] 的 使用 Google Colab圖片轉文字 ( OCR 圖片字元辨識 ) 兩篇文章來建立手寫數字辨識系統。環境使用 google 提供的線上編輯器 colab,並利用 python 的 pillow 及 pytessract 套件開啟檔案和進行辨識。

  • pytessract:Python Tesseract,a wrapper for Google's Tesseract-OCR Engine.[註2]
  • Tesseract-Ocr:This package contains an OCR engine - libtesseract and a command line program - tesseract. Tesseract 4 在句子識別(line recognition)的部分新增了一個新的 neural net (LSTM) based OCR engine,但仍支援Tesseract 3 的舊版透過**字元辨識(character patterns)**識別的 OCR engine[註3]。

https://ithelp.ithome.com.tw/upload/images/20220918/20131719y0md3kYdzH.png


整體程式碼概觀如上,在測試好是否連結 google 雲端硬碟和安裝好相關套件後,我準備了三張圖片,分別是:

  • number_print:在word上打字截圖(字型Calibri)
  • number_paint:使用小畫家手寫圖片
  • number_handwritten:寫在紙上拍照的圖片

三張圖片均有簡單裁切並調正但大小不一。
https://ithelp.ithome.com.tw/upload/images/20220918/20131719F7i0EhZWY2.png


然後將這三張圖片放到同一層與檔案同一層,辨識的 python 程式碼如下:

from PIL import Image
import pytesseract

img = Image.open('number_handwritten.jpg')
text = pytesseract.image_to_string(img, config=("--psm 10")) #定義分割模式:將整張圖像視為單個字母
print(text)

pytesseract.image_to_string 設定 config 是因為遇到 pytesseract 辨識不出來單個圖像的情形[註4]

三張圖片皆可辨識出正確結果數字。


小結

今天我們簡單快速實做出了手寫數字辨識系統,詳細去看 pytessract 套件到底是怎麼辨識,發現它是利用神經網路跟比對 pattern 的方式來達成將圖片中內容轉文字的目的。

那什麼是神經網路(Neural Network)?它跟機器學習又有什麼樣的關聯?明天我們將會簡單來聊聊機器學習與神經網路的概念。

[註1] STEAM教育學習網 https://steam.oxxostudio.tw/category/about/index.html
[註2] https://github.com/madmaze/pytesseract
[註3] https://github.com/tesseract-ocr/tesseract
[註4] Tesseract does not recognize single characters


上一篇
[DAY3] 有沒有別人做過的手寫數字辨識程式?方法的分類整理
下一篇
[DAY5] 什麼是神經網路(Neural Network)?機器學習與深度學習的概念介紹
系列文
機器學習的 hello world - 用手寫數字辨識系統學習 ML 的 30 天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言